home *** CD-ROM | disk | FTP | other *** search
/ The Business Master (3rd Edition) / The Business Master (3rd Edition).iso / files / spreotus / 123fin / personal.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  9.9 KB  |  373 lines

  1. 100  REM ------------------------------
  2. 110  N$=        "PERSONAL FILE"
  3. 120  REM ------------------------------
  4. 130  GOSUB 6200                       'INITIALIZE
  5. 140  X$(1)="ADD RECORD"
  6. 150  X$(2)="LIST FILE"
  7. 160  X$(3)="DELETE RECORD"
  8. 170  X$(4)="SEARCH FILE"
  9. 171  X$(5)="TERMINATE PROGRAM"
  10. 180   REM DECLARE NO. OF FIELDS AND NAMES
  11. 190  F$(1)="LAST NAME"
  12. 200  F$(2)="FIRST NAME"
  13. 210  F$(3)="TELEPHONE"
  14. 220  F$(4)="STREET ADDRESS"
  15. 230  F$(5)="CITY"
  16. 240  F$(6)="STATE"
  17. 250  F$(7)="ZIP"
  18. 260  NF=7 : F$="PERS.BAS"  : FB$="PERS.BAK"
  19. 270  N=5 : GOSUB 7000                 'DISPLAY MENU
  20. 271  IF X = 5 THEN RUN"MENU.BAT"
  21. 280  ON X GOSUB 690,470,750,830
  22. 290  GOTO 100
  23. 300  REM ------------------------------
  24. 310  REM LIST RECORD ON PRINTER
  25. 320  REM ------------------------------
  26. 330  LPRINT L;". ",P1$;", ";P2$
  27. 340  LPRINT, P3$
  28. 350  LPRINT, P4$
  29. 360  LPRINT, P5$; ", ";P6$;" " P7$
  30. 370  LPRINT
  31. 380  RETURN
  32. 390  REM ------------------------------
  33. 400  REM LIST RECORD ON SCREEN
  34. 410  REM ------------------------------
  35. 420  PRINT L;". ";,P1$;". ";P2$
  36. 430  PRINT, P3$
  37. 440  PRINT, P4$
  38. 450  PRINT, P5$; ", ";P6$;" " P7$
  39. 460  PRINT : RETURN
  40. 470  REM ------------------------------
  41. 480  N$=          "LIST FILE"
  42. 490  REM ------------------------------
  43. 500  GOSUB 6200             'INITIALIZE
  44. 510  Q1$="OUTPUT TO PRINTER"
  45. 520  Q2$="" : Q3$="YES OR NO"
  46. 530  GOSUB 5000             'PRINT DIALOG
  47. 540  GOSUB 7800             'YESNO
  48. 550  CLS
  49. 560  OPEN F$ FOR INPUT AS #1
  50. 570  L=1
  51. 580  IF EOF(1) THEN 660
  52. 590  INPUT#1,P1$,P2$,P3$,P4$,P5$,P6$,P7$,P8$
  53. 600  IF YN$="Y" THEN GOSUB 300 ELSE GOSUB 400
  54. 610  IF YN$="Y" THEN GOTO 640
  55. 620  FOR I1= 1 TO 100       'DELAY TO READ ON SCREEN
  56. 630  NEXT I1
  57. 640  L=L+1
  58. 650  GOTO 580
  59. 660  PRINT :PRINT : PRINT
  60. 670  GOSUB 7400             'PAUSE
  61. 680  CLOSE: RETURN
  62. 690  REM ------------------------------
  63. 700  N$=          "ADD RECORD"
  64. 710  REM ------------------------------
  65. 720  REM CALL ADD RECORD SUBROUTINE
  66. 730  GOSUB 3000
  67. 740  RETURN
  68. 750  REM ------------------------------
  69. 760  N$=        "DELETE RECORD"
  70. 770  REM ------------------------------
  71. 780  GOSUB 4600                       'DELETE RECORD
  72. 790  IF L <> -1 THEN GOTO 810
  73. 800  LOCATE 19,1 : PRINT "RECORD NOT FOUND"
  74. 810  Q2$="DELETE" : GOSUB 3400        'ASK FOR ANOTHER
  75. 820  IF YN$="N" THEN RETURN ELSE 780
  76. 830  REM -------------------------------
  77. 840  N$=          "SEARCH FILE"
  78. 850  REM -------------------------------
  79. 860  GOSUB 6200 : F=0 :L=0
  80. 870  Q1$="SEARCH FOR LAST NAME"
  81. 880  Q2$="" : Q3$="LAST NAME :"
  82. 890  GOSUB 5000
  83. 900  INPUT NA$
  84. 910  OPEN F$ FOR INPUT AS #1
  85. 920  L=L+1 : IF EOF(1) THEN 990
  86. 930  INPUT#1,P1$,P2$,P3$,P4$,P5$,P6$,P7$,P8$
  87. 940  IF P1$ <> NA$ THEN GOTO 920  'NO MATCH TRY AGAIN
  88. 950  F=1                          'SET FOUND FLAG
  89. 960  LOCATE 5,1 : CLS : GOSUB 400 'DISPLAY REC ON SCRN
  90. 970  GOSUB 7400                   'WAIT FOR KEY
  91. 980  GOTO 920                     'LOOK FOR NEXT MATCH
  92. 990  REM OUT OF RECORDS
  93. 1000  CLOSE
  94. 1010  LOCATE 19,1
  95. 1020  IF F=0 THEN PRINT "NO MATCHES FOUND"
  96. 1030  Q2$="SEARCH" : GOSUB 3400   'ASK FOR ANOTHER
  97. 1040  IF YN$="N" THEN RETURN ELSE 830
  98. 3000  REM          "ADREC"
  99. 3001  ' -------------------------------
  100. 3002  '     ADD RECORDS TO FILE
  101. 3003  '
  102. 3004  'THIS ROUTINE ADDS RECORDS TO A FILE
  103. 3005  '
  104. 3006  'CALLING PARAMETERS:
  105. 3007  '    NF= NUMBER OF FIELDS IN RECORD (MAX=8)
  106. 3008  '    F$(L)=NAMES OF FIELDS
  107. 3009  '    F$=NAME OF FILE TO ADD TO
  108. 3010  '
  109. 3011  'RETURNED PARAMETERS:
  110. 3012  '    NONE
  111. 3013  '
  112. 3014  'COMMENT: ADDS RECORDS TILL TERMINATED BY USER
  113. 3015  '       & FIELDS ARE CREATED EVEN IF BLANK
  114. 3016  '
  115. 3017  ' -------------------------------
  116. 3020  OPEN F$ FOR APPEND AS #1
  117. 3030  K=1  : GOSUB 6200               'INITIALIZE
  118. 3040  Q1$="ENTER DATA"
  119. 3050  Q2$=""
  120. 3060  FOR L= 1 TO NF
  121. 3070    Q3$=F$(L) : GOSUB 5800        'ASK FOR DATA
  122. 3080  NEXT L
  123. 3090  WRITE#1,P$(1),P$(2),P$(3),P$(4),P$(5),P$(6),P$(7),P$(8)
  124. 3100  REM SEE IF MORE RECORDS TO BE ADDED
  125. 3110  Q1$="ADD ANOTHER RECORD ? "
  126. 3120  Q2$="" : Q3$="YES OR NO"
  127. 3130  GOSUB 5000                      'PRESENT DIALOG
  128. 3140  GOSUB 7800                      'YESNO
  129. 3150  IF YN$="Y" GOTO 3030
  130. 3160  CLOSE : RETURN
  131. 3400  REM          "ANOTH"
  132. 3401  ' --------------------------------
  133. 3402  '      ASK FOR ANOTHER RUN
  134. 3403  '
  135. 3404  'THIS ROUTINE ASKS THE USER WHETHER TO CONTINUE
  136. 3405  '
  137. 3406  'CALLING PARAMETERS:
  138. 3407  '    Q2$= STRING TO SPECIFY WHAT OPERATION TO DO
  139. 3408  '
  140. 3409  'RETURNED PARAMETERS:
  141. 3410  '    YN$= A "Y" OR "N" FOR YES OR NO
  142. 3411  '
  143. 3412  ' --------------------------------
  144. 3420  Q1$="WOULD YOU LIKE TO "
  145. 3430  Q3$="AGAIN Y OR N ?"
  146. 3440  GOSUB 5000                       'PRESENT DIALOG
  147. 3450  GOSUB 7800                       'ASK YES OR NO
  148. 3460  RETURN
  149. 3800  REM        "BAKFIL"
  150. 3801  ' -------------------------------
  151. 3802  '      BACK UP A FILE
  152. 3803  '
  153. 3804  'THIS ROUTINE CREATES A BACKUP COPY OF A FILE
  154. 3805  '
  155. 3806  'CALLING PARAMETERS:
  156. 3807  '    F$= NAME OF FILE TO BACKUP
  157. 3808  '    FB$=NAME OF BACKUP FILE
  158. 3809  '
  159. 3810  ' -------------------------------
  160. 3820  OPEN F$ FOR INPUT AS #1
  161. 3830  OPEN FB$ FOR OUTPUT AS #2
  162. 3840  'READ A RECORD, THEN WRITE IT
  163. 3850  FOR I= 1 TO 4000
  164. 3860    IF EOF(1) THEN GOTO 3900     'TILL END OF FILE
  165. 3870    INPUT#1,P1$,P2$,P3$,P4$,P5$,P6$,P7$,P8$
  166. 3880    WRITE#2,P1$,P2$,P3$,P4$,P5$,P6$,P7$,P8$
  167. 3890  NEXT I
  168. 3900  CLOSE
  169. 3910  RETURN
  170. 4600  REM         "DELREC"
  171. 4601  ' -------------------------------
  172. 4602  '    DELETE RECORC
  173. 4603  '
  174. 4604  'THIS ROUTINE DELETES A RECORD FROM A FILE
  175. 4605  '
  176. 4606  'CALLING PARAMETERS:
  177. 4607  '   FB$= NAME OF BACKUP FILE TO CREATE
  178. 4608  '   F$=NAME OF FILE TO DELETE FROM
  179. 4609  '
  180. 4610  'RETURNED PARAMETERS:
  181. 4611  '   L=-1 IF RECORD NOT FOUND
  182. 4612  '
  183. 4613  'COMMENT-USER IS ASKED FOR RECORD NUMBER
  184. 4614  '         BACKUP FILE IS CREATED
  185. 4615  '
  186. 4616  ' -------------------------------
  187. 4620  N$="DELETE RECORD" : GOSUB 6200   'INITIALIZE
  188. 4630  Q1$="NUMBER OF RECORD TO DELETE"
  189. 4640  Q2$="" : Q3$=""
  190. 4650  GOSUB 5000                        'ASK QUESTION
  191. 4660  INPUT L                           'GET REC NUMBER
  192. 4670  GOSUB 3800                        'CREATE BACKUP
  193. 4680  OPEN FB$ FOR INPUT AS #1
  194. 4690  OPEN F$ FOR OUTPUT AS #2
  195. 4700  FOR I = 1 TO L-1
  196. 4710    IF EOF(1) THEN GOTO 4860        'REC NOT FOUND
  197. 4720    INPUT#1,P1$,P2$,P3$,P4$,P5$,P6$,P7$,P8$
  198. 4730    WRITE#2,P1$,P2$,P3$,P4$,P5$,P6$,P7$,P8$
  199. 4740  NEXT I
  200. 4750  REM READ BUT DON'T WRITE RECORD TO DELETE
  201. 4760    INPUT#1,P1$,P2$,P3$,P4$,P5$,P6$,P7$,P8$
  202. 4770  REM READ AND WRITE TILL END OF FILE
  203. 4780  FOR I= 1 TO 4000
  204. 4790    IF EOF(1) THEN GOTO 4840
  205. 4800    INPUT#1,P1$,P2$,P3$,P4$,P5$,P6$,P7$,P8$
  206. 4810    WRITE#2,P1$,P2$,P3$,P4$,P5$,P6$,P7$,P8$
  207. 4820  NEXT I
  208. 4830  REM NORMAL RETURN
  209. 4840  CLOSE  : RETURN
  210. 4850  REM ERROR RETURN
  211. 4860  CLOSE
  212. 4870  L=-1                               'SET ERROR FLAG
  213. 4880  RETURN
  214. 5000  REM        "DIALOG"
  215. 5001  ' -------------------------------
  216. 5002  '         DIALOGUE
  217. 5003  '
  218. 5004  'CALLING PARAMETERS:
  219. 5005  '   Q1$,Q2$,Q3$, = QUESTIONS TO DISPLAY
  220. 5006  '
  221. 5007  'RETURNED PARAMETERS:
  222. 5008  '   NONE
  223. 5009  '
  224. 5010  'COMMENT: UNUSED QUESTION STRINGS SHOULD BE SET
  225. 5011  '          TO NULL ("")
  226. 5012  '
  227. 5013  ' -------------------------------
  228. 5020  FOR I= 20 TO 23
  229. 5030   LOCATE I,1
  230. 5040   IF I > 20 THEN 5080
  231. 5050     FOR J= 1 TO 40           'DRAW A BORDER
  232. 5060       PRINT "-";
  233. 5070     NEXT J
  234. 5080   IF I = 21 THEN PRINT Q1$; 'FIRST QUESTION
  235. 5090   IF I = 22 THEN PRINT Q2$; 'SECOND QUESTION
  236. 5100   IF I = 23 THEN PRINT Q3$; 'THIRD QUESTION
  237. 5109  REM RESTORE CURSOR HERE AFTER 3RD QUEST
  238. 5110    CP1=POS(N)
  239. 5120    CP=POS(N)                'CURSOR COLUMN POSITION
  240. 5130    IF CP>40 THEN 5150
  241. 5140     PRINT " "; : GOTO 5120  'ERASE ANY PRIOR INFO
  242. 5149  REM RESTORE CURSOR FOR USER RESPONSE
  243. 5150  LOCATE I,CP1
  244. 5160  NEXT I
  245. 5170  RETURN
  246. 5400  REM         "INCH"
  247. 5401  ' ------------------------------
  248. 5402  '        INPUT CHARACTER
  249. 5403  '
  250. 5404  'CALLING PARAMETERS:
  251. 5405  '   NONE
  252. 5406  '
  253. 5407  'RETURNED PARAMETERS:
  254. 5408  '   CH$=INPUT CHARACTER
  255. 5409  '
  256. 5410  ' ------------------------------
  257. 5420  REM WAIT FOR INPUT CHARACTER
  258. 5430  CH$= INKEY$ : IF CH$="" THEN 5430
  259. 5440  Z=ASC(CH$)
  260. 5450  IF Z < 97 OR Z > 122 THEN 5470
  261. 5460  Z=Z-32
  262. 5470  CH$=CHR$(Z)
  263. 5480  RETURN
  264. 5800  REM        "INDAT"
  265. 5801  ' -------------------------------
  266. 5802  '         INPUT DATA
  267. 5803  '
  268. 5804  'CALLING PARAMETERS:
  269. 5805  '   Q1$,Q2$= USER INSTRUCTIONS
  270. 5806  '   Q3$=NAME OF DATA ITEM
  271. 5807  '
  272. 5808  'RETURNED PARAMETERS:
  273. 5809  '   P$(K)=ARRAY OF DATA ITEMS
  274. 5810  '
  275. 5811  'COMMENT:ONE ITEM AT A TIME IS INPUT
  276. 5812  '         FIRST CALL IS WITH K=1
  277. 5813  '         K UPDATED AUTOMATICALLY
  278. 5814  '
  279. 5815  '---------------------------------
  280. 5820  GOSUB 5000                       'ASK QUESTIONS
  281. 5830  INPUT P$(K)                      'GET DATA
  282. 5840  REM ECHO QUESTION AND ANSWER
  283. 5850  LOCATE K+2,3
  284. 5860  PRINT Q3$;TAB(25);P$(K)
  285. 5870  K=K+1                            'UPDATE INDEX
  286. 5880  RETURN
  287. 6200  REM            "INIT"
  288. 6201  '----------------------------------
  289. 6202  '         INITIALIZE DISPLAY
  290. 6203  '
  291. 6204  'THIS ROUTINE CLEARS THE SCREEN
  292. 6205  '   AND PRINTS THE PROGRAM TITLE
  293. 6206  'CALLING PARAMETERS:
  294. 6207  '   N$=TITLE OF PROGRAM
  295. 6208  '
  296. 6209  'RETURNED PARAMETERS:
  297. 6210  '   NONE
  298. 6211  '
  299. 6212  ' ----------------------------------
  300. 6220  CLS                                 'CLEAR SCREEN
  301. 6230  PRINT N$    : PRINT                 'TITLE
  302. 6240  KEY OFF
  303. 6250  RETURN
  304. 7000  REM         "MENU"
  305. 7001  ' ------------------------------
  306. 7002  '        MENU PROGRAM
  307. 7003  '
  308. 7004  'THIS PROGRAM DISPLAYS A MENUE
  309. 7005  '  AND CHOOSES A PROGRAM
  310. 7006  'CALLING PARAMETERS:
  311. 7007  '  N= NO. OF MENU ITEMS
  312. 7008  '  X$(I)= ARRAY OF PROGRAM NAMES
  313. 7009  '
  314. 7010  'RETURNED PARAMETERS:
  315. 7011  '  X=PROGRAM NUMBER CHOSEN
  316. 7012  '
  317. 7013  ' ------------------------------
  318. 7020  CLS
  319. 7030  FOR I = 1 TO N               'DISPLAY MENU
  320. 7040    IF I=10 THEN PRINT 0; ELSE PRINT I;
  321. 7050     PRINT  "= " ; X$(I)
  322. 7060  NEXT I
  323. 7070  Q1$="" : Q2$=""
  324. 7080  Q3$="CHOOSE PROGRAM :"
  325. 7090  GOSUB 5000                   'ASK QUESTIONS
  326. 7100  GOSUB 5400                   'INPUT CHAR
  327. 7110  X= VAL(CH$)
  328. 7119  REM SEE IF CHAR IN RANGE
  329. 7120  IF X>=1 AND X<=N THEN RETURN
  330. 7130  IF X=0 AND N=10 THEN 7140 ELSE 7150
  331. 7140  X=10 : RETURN
  332. 7150  Q1$="ILLEGAL CHOICE, CHOOSE AGAIN"
  333. 7160  GOSUB 5000
  334. 7170  GOTO 7100
  335. 7400  REM          "PAUSE"
  336. 7401  ' -------------------------------
  337. 7402  '       WAIT FOR ANY KEY
  338. 7403  '
  339. 7404  'THIS ROUTINE WAITS FOR USER TO STRIKE KEY
  340. 7405  '
  341. 7406  'CALLING PARAMETERS:
  342. 7407  '  NONE
  343. 7408  '
  344. 7409  'RETURNED PARAMETERS
  345. 7410  '  NONE
  346. 7411  '
  347. 7412  ' -------------------------------
  348. 7420  Q1$="STRIKE ANY KEY TO CONTINUE"
  349. 7430  Q2$="" : Q3$=""
  350. 7440  GOSUB 5000                        'CALL DIALOG
  351. 7450  X$=INKEY$ : IF X$ = "" THEN 7450  'WAIT FOR KEY
  352. 7460  RETURN
  353. 7800  REM          "YESNO"
  354. 7801  ' -------------------------------
  355. 7802  '            YES-NO
  356. 7803  '
  357. 7804  'CALLING PARAMETERS:
  358. 7805  '  NONE
  359. 7806  '
  360. 7807  'RETURNED PARAMETERS:
  361. 7808  '  YN$= CONTAINS A Y OR N
  362. 7809  '
  363. 7810  ' -------------------------------
  364. 7815  LOCATE 24,24:PRINT "F10 to EXIT program.
  365. 7820  REM WAIT FOR KEY TO BE STRUCK
  366. 7830  YN$=INKEY$ : IF YN$="" THEN 7830
  367. 7840  IF YN$="y" THEN YN$="Y"
  368. 7850  IF YN$="n" THEN YN$="N"
  369. 7860  IF YN$ = "Y" OR YN$ = "N" THEN 7890
  370. 7870  REM NOT YES OR NO TRY AGAIN
  371. 7880  GOTO 7830
  372. 7890  PRINT YN$  :  RETURN
  373.